package com.lingjtx.common.core.annotation;

import java.lang.annotation.*;

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiSignature {

    // 请求签名，对于安全系数比较高的接口必须进行请求签名，支付接口，隐私安全接口，开放第三方平台接口
    // 结合时间戳(timestamp)和随机数（nonce）来防止重放攻击
    // 签名放在请求头 Signature 里面：timestamp:xxx,nonce:xxx,sign:xxx 作为请求头值

    // 签名字符串计算：采用非对称加密算法，对请求参数内容content进行加密计算，content内容：
    // timestamp\n
    // nonce\n
    // data\n
    // 示例：
    // 1671591037621\n
    // a673bde1e66885d4ad8b925d46eaf8cc\n
    // {"data":"***"}\n

    // 1、校验时间戳是否在有效窗口内。服务端接收请求后，计算当前时间与请求时间戳的差值。如果差值超出允许的时间窗口（如 5 分钟），则拒绝请求
    // 2、检查随机数（Nonce）是否已存在，防止重复（设定 Nonce 过期时间为 10 分钟）
    // 3、验证签名确保数据完整性和真实性
}
